1. Field of the Invention
Embodiments of the present invention generally relate to data storage systems and, more particularly, to a method and apparatus for providing a multipathing connection to a storage volume.
2. Description of the Related Art
Modern computer networks generally comprise a plurality of user computers connected to one another and to a computer server via a communications network. To provide redundancy and high availability of information and applications that are executed upon a computer server, multiple computer servers may be arranged in a cluster, i.e., forming a server cluster. Such server clusters are available under the trademark VERITAS CLUSTER SERVER from Veritas Software Corporation of Mountain View, Calif. In a server cluster, a plurality of servers communicate with one another to facilitate failover redundancy such that when software or hardware, i.e., computer resources, become inoperative on one's server, another server can quickly execute the same software that was running on the inoperative server substantially without interruption. As such, a user of services that are supported by a server cluster would not be substantially impacted by an inoperative server or software.
Within a server cluster, the servers are generally connected to at least one switch that controls access to one or more storage volumes. Each switch contains a host computer that facilitates routing of data and READ/WRITE requests to and from the storage volume. The storage volume generally comprises two data ports that are each coupled to a separate storage processor. The storage processors facilitate access to data stored on one or more disk drive arrays within the storage volume. Furthermore, these two storage processors connect one or more disk arrays to the host computer. One storage processor is “active” and is used to transmit data to and from a disk array having a predefined logical unit number (LUN). The other storage processor is designated as “passive” and will serve as a replacement for the active processor in the event the active processor fails (i.e., the two storage processors provide redundancy).
Rapid failover from one storage processor to another is accomplished by designating one port associated with the active storage processor as an active port and designating the other data port associated with the passive storage processor as a passive port. A host (within a switch or elsewhere) uses the active port to READ/WRITE data to the storage volume. If the host detects a problem with reading data from the storage volume, it will automatically resend the READ request to the passive port. Upon receiving a READ request on the passive port, the storage volume assumes a failure of the active storage processor (or a failure of the communication path to the storage volume) has occurred such that the passive storage processor is now designated the active storage processor. As such, a failover from the active port to the passive port is automatically accomplished. The host will, from now on, use the new active storage processor for communications to the storage volume.
In a storage system such as described above, failover may be triggered during the initialization of a host computer's disk driver (i.e., the disk driver that facilitates communications on the active and passive ports). During the disk driver's initialization process, a request in the form of a READ command is sent to both of the storage volume's ports. The disk driver transmits this request for the purpose of obtaining a copy of the table of contents (TOC) information contained in the storage volume. Typically, problems will not arise if the request is sent via the active storage processor. However, if a READ command is issued to the passive storage processor to request the TOC information, failover automatically occurs and the active and passive storage processors are exchanged in the manner described above. Bearing in mind that failover is caused by the initialization of the host computer's disk driver, coupled with the fact that a plurality of host computers could be connected to the same storage volume, there is significant potential for a multitude of compounding failovers, or a “ping-ponging” effect as each host is initialized. As a result, this problem causes performance degradation (i.e., wasted time switching the active and passive storage processors) within the system.
Therefore, there is a need in the art for a method and apparatus for avoiding failovers during the initialization of a host computer's disk driver to provide a robust mulitpathing connection to a storage driver.